<?php

namespace app\model;

use support\Model;

/**
 * 表结构说明（参考 20250706031415_create_pay_ping_table_migration.php 及 20250711080852_add_columns_to_pay_ping_table_migration.php）：
 * 
 * pay_ping 表字段：
 * - id            : int, 主键，自增
 * - user_id       : int, 用户ID，允许为 null
 * - biz_id        : int, 商家ID，默认 0，允许为 null
 * - goods_id      : int, 商品ID，默认 0，允许为 null
 * - item_id       : int, 相关ID，默认 0，允许为 null
 * - type          : string(16), 类型，默认 'pay'，允许为 null（如 'pay', 'biz-order', 'order'）
 * - star          : int(11), 评分，默认 5，允许为 null
 * - content       : string(255), 评论内容，允许为 null
 * - images        : string, 评价图片，json 格式，允许为 null，默认空字符串
 * - system_reply  : text(255), 系统回复，允许为 null
 * - biz_reply     : text(255), 商家回复，允许为 null
 * - created_at    : datetime, 创建时间，允许为 null
 * - updated_at    : datetime, 更新时间，允许为 null
 * 
 * 
 * 索引：
 * - 联合唯一索引：user_id, biz_id, type
 */

class PayPingModel extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'pay_ping';

    /**
     * The primary key associated with the table.
     *
     * @var string
     */
    protected $primaryKey = 'id';

    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    public $timestamps = false;

    protected $guarded = [];

    const TYPE = [
        'biz-order' => '消费订单',
        'pay' => '随心付',
        'order' => '严选订单',
    ];

    /**
     * 关联用户
     */
    public function user()
    {
        return $this->belongsTo(UserModel::class, 'user_id', 'id');
    }

    /**
     * 关联商品
     */
    public function goods(){
        if($this->type == 'biz-order'){
            return $this->belongsTo(BizGoodsModel::class, 'goods_id', 'id');
        }

        if($this->type == 'order'){
            return $this->belongsTo(GoodsModel::class, 'goods_id', 'id');
        }
        return null;
    }

    /**
     * 关联订单
     */
    public function order()
    {
        return $this->belongsTo(OrderModel::class, 'order_id', 'id');
    }

    /**
     * 关联商家
     */
    public function biz()
    {
        return $this->belongsTo(BizModel::class, 'biz_id', 'id');
    }

    public function doImages(){
        if(empty($this->images)){
            return [];
        }

        $imgs = json_decode(stripslashes($this->images),true);
        if(is_array($imgs) == false){
            return [];
        }
        foreach($imgs as $key => &$img){
            $imgs[$key] = Util::pathToUrl($img,true);
        }
        return $imgs;
    }
}